﻿/* API函数：IO类型相关
 */

namespace LSLib.API
{
    using System;
    using System.Runtime.InteropServices;
    using System.Text;

    [Serializable]
    public static class IO
    {
        /// <summary>Write ini file
        /// </summary>
        /// <param name="lpAppName">INI文件中的一个字段名[节名]可以有很多个节名</param>
        /// <param name="lpKeyName">lpAppName 下的一个键名，也就是里面具体的变量名</param>
        /// <param name="lpString"> 键值,也就是数据</param>
        /// <param name="lpFileName">INI文件的路径</param>
        /// <returns></returns>
        [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        internal static extern bool WritePrivateProfileString(
            string lpAppName,
            string lpKeyName,
            string lpString,
            string lpFileName);

        /// <summary>Read ini file
        /// </summary>
        /// <param name="lpAppName">INI文件中的一个字段名[节名]可以有很多个节名</param>
        /// <param name="lpKeyName">lpAppName 下的一个键名，也就是里面具体的变量名</param>
        /// <param name="lpDefault">如果lpReturnedString为空,则把个变量赋给lpReturnedString</param>
        /// <param name="lpReturnedString">存放键值的指针变量,用于接收INI文件中键值(数据)的接收缓冲区</param>
        /// <param name="nSize">lpReturnedString的缓冲区大小</param>
        /// <param name="lpFileName">INI文件的路径</param>
        /// <returns></returns>
        [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
        internal static extern uint GetPrivateProfileString(
            string lpAppName,
            string lpKeyName,
            string lpDefault,
            StringBuilder lpReturnedString,
            uint nSize,
            string lpFileName);
    }
}
